﻿using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace AnimationXMachine
{
    public interface IAnimatable
    {
        /// <summary>
        /// Sets which animation to be the current one. Returns true if
        /// the animation is set correctly, and false otherwise.
        /// </summary>
        /// <param name="type">Which animation type is desired.</param>
        bool SetAnimation(int type);

        void RemoveAnimation(int type);

        /// <summary>
        /// Adds a new animation to this object.
        /// </summary>
        /// <param name="type">The name/index/enum of the animation.</param>
        /// <param name="frameDelay">For how long each frame will be displayed.</param>
        /// <param name="numberOfFrames">How many frames there are in the animation.</param>
        /// <param name="height">How tall each frame is, in pixels.</param>
        /// <param name="width">How thick each frame is, in pixels.</param>
        /// <param name="lines">How many lines, on the sprite sheet, that the animation covers.</param>
        /// <param name="startPoint">Where, on the sprite sheet, that the animation starts, in pixels.</param>
        void AddAnimation(int type, int frameDelay, int numberOfFrames, int height,
            int width, int lines, Point startPoint, string texturePath, Texture2D texture);

    }
}